package com.mini.grpc.spring.annotation;

import java.lang.annotation.*;

/**
 * 标记gRPC方法的注解
 * 用于配置方法级别的特性
 * 
 * @author Mini-gRPC
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GrpcMethod {
    
    /**
     * 方法名称，如果不指定则使用方法名
     * 
     * @return 方法名称
     */
    String value() default "";
    
    /**
     * 方法描述
     * 
     * @return 方法描述
     */
    String description() default "";
    
    /**
     * 是否启用此方法
     * 
     * @return 是否启用
     */
    boolean enabled() default true;
    
    /**
     * 方法级别的拦截器类列表
     * 这些拦截器将应用于此方法，优先级高于服务级别拦截器
     * 
     * @return 拦截器类数组
     */
    Class<?>[] interceptors() default {};
    
    /**
     * 方法超时时间（毫秒）
     * 如果为0则使用默认超时时间
     * 
     * @return 超时时间
     */
    long timeoutMillis() default 0;
    
    /**
     * 是否启用重试
     * 
     * @return 是否启用重试
     */
    boolean retryEnabled() default false;
    
    /**
     * 最大重试次数
     * 
     * @return 最大重试次数
     */
    int maxRetries() default 3;
} 